package com.ms.teapuesto.bean;

import com.ms.teapuesto.util.NumberUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.math.BigDecimal;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by JAVA on 14/09/2014.
 */
public class ReporteBean {

    private static final Logger LOG = LoggerFactory.getLogger(ReporteBean.class);
    private Long drawId;

    private String date;

    private Date fecha;

    private EventoBean evento = new EventoBean();
    private EquipoBean local = new EquipoBean();
    private EquipoBean visita = new EquipoBean();

    public EventoBean getEvento() {
        return evento;
    }

    public void setEvento(EventoBean evento) {
        this.evento = evento;
    }

    public EquipoBean getLocal() {
        return local;
    }

    public void setLocal(EquipoBean local) {
        this.local = local;
    }

    public EquipoBean getVisita() {
        return visita;
    }

    public void setVisita(EquipoBean visita) {
        this.visita = visita;
    }

    public Long getDrawId() {
        return drawId;
    }

    public void setDrawId(Long drawId) {
        this.drawId = drawId;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public Map generar() {
        LOG.info("Equipos " + evento.getTeams());
        Map result = new HashMap();
        result.put("FECHA", fecha);
        result.put("DRAWID", drawId);
        result.put("EVENTID", evento.getEventId());
        result.put("LIGA", evento.getLiga1());
        result.put("TEAMS", evento.getTeams());
        result.put("L", evento.getLocal());
        result.put("E", evento.getEqual());
        result.put("V", evento.getVisitor());
        result.put("LOCAL", local.getNombre());
        result.put("VISITA", visita.getNombre());
        result.put("LOCAL_POSICION_ULT_8", local.getPosicion_ult_8());
        result.put("VISITA_POSICION_ULT_8", visita.getPosicion_ult_8());
        result.put("LOCAL_PARTIDOS", local.getPartidos_ult_8());
        result.put("VISITA_PARTIDOS", visita.getPartidos_ult_8());
        result.put("LOCAL TOTAL_G_ULT_8", local.getTotal_g_ult_8());
        result.put("VISITA TOTAL_G_ULT_8", visita.getTotal_g_ult_8());

        int totalPartidos = 10000;
        if (local.getLocal_partidos() != null && visita.getVisita_partidos() != null) {
            totalPartidos = local.getLocal_partidos() + visita.getVisita_partidos();
            result.put("% LOCAL", (NumberUtil.nvl(local.getLocal_g_ult()).add(NumberUtil.nvl(visita.getVisita_p_ult()))).doubleValue() / (local.getLocal_partidos() + visita.getVisita_partidos()) * 100);
            result.put("% EMPATE", (NumberUtil.nvl(local.getLocal_e_ult()).add(NumberUtil.nvl(visita.getVisita_e_ult()))).doubleValue() / (local.getLocal_partidos() + visita.getVisita_partidos()) * 100);
            result.put("% VISITA", (NumberUtil.nvl(local.getLocal_p_ult()).add(NumberUtil.nvl(visita.getVisita_g_ult()))).doubleValue() / (local.getLocal_partidos() + visita.getVisita_partidos()) * 100);
        } else {
            result.put("% LOCAL", 0);
            result.put("% EMPATE", 0);
            result.put("% VISITA", 0);
        }

        if (local.getPartidos_ult_8() != null && visita.getPartidos_ult_8() != null) {
            result.put("% LOCAL G", ((local.getTotal_g_ult_8() + visita.getTotal_p_ult_8()) * 1.0 / (local.getPartidos_ult_8() + visita.getPartidos_ult_8()) * 100));
            result.put("% EMPATE G", ((local.getTotal_e_ult_8()) + (visita.getTotal_e_ult_8())) * 1.0 / (local.getPartidos_ult_8() + visita.getPartidos_ult_8()) * 100);
            result.put("% VISITA G", ((local.getTotal_p_ult_8()) + (visita.getTotal_g_ult_8())) * 1.0 / (local.getPartidos_ult_8() + visita.getPartidos_ult_8()) * 100);

        } else {
            result.put("% LOCAL G", 0);
            result.put("% EMPATE G", 0);
            result.put("% VISITA G", 0);
        }
        result.put("LOCAL_G", local.getLocal_g_ult());
        result.put("VISITA_G", visita.getVisita_g_ult());
        result.put("LOCAL_G_ULT_8", local.getLocal_g_ult());
        result.put("LOCAL_G_P_ULT_8", local.getLocal_g_ult());
        result.put("VISITA_G_ULT_8", visita.getVisita_g_ult());
        result.put("VISITA_G_P_ULT_8", visita.getVisita_g_ult());
        result.put("TOTAL_3_ULT_8", calcularTotal3Ult8(local, visita));

        return result;
    }


    private String calcularTotal3Ult8(EquipoBean local, EquipoBean visita) {

     /*   BigDecimal local_total_3 = local.getTotal_3_ult_8(); // 30%
        BigDecimal visita_total_3 = visita.getTotal_3_ult_8(); // 40%
        BigDecimal localGolesFavor = NumberUtil.nvl(local.getLocal_avg_scored_1t_ult_8()).add(NumberUtil.nvl(visita.getVisita_avg_conceded_ult_8())); // >3
        BigDecimal visitaGolesFavor = NumberUtil.nvl(visita.getVisita_avg_scored_ult_8()).add(NumberUtil.nvl(local.getLocal_avg_conceded_ult_8())); // > 3
        BigDecimal visitaConceded = visita.getVisita_avg_conceded_ult_8(); // > 1
        BigDecimal localConceded = local.getLocal_avg_conceded_ult_8(); // > 1
        if (NumberUtil.nvl(local_total_3).doubleValue() > 50
                && NumberUtil.nvl(visita_total_3).doubleValue() > 50
                && localGolesFavor.doubleValue() > 2.5
                && visitaGolesFavor.doubleValue() > 2.5
                && NumberUtil.nvl(visitaConceded).doubleValue() > 0.7
                && NumberUtil.nvl(localConceded).doubleValue() > 0.7
                ) {
            return "OK";
        }*/

        return "-";
    }
}
